package com.ruoyi.cat.service.impl;

import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

import com.ruoyi.cat.domain.CatOutsiderealmTable;
import com.ruoyi.cat.domain.CatWxconfigTable;
import com.ruoyi.cat.mapper.CatWxconfigTableMapper;
import com.ruoyi.cat.service.ICatOutsiderealmTableService;
import com.ruoyi.cat.service.ICatWxconfigTableService;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


/**
 * 【请填写功能名称】Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-01-21
 */
@Service
public class CatWxconfigTableServiceImpl implements ICatWxconfigTableService
{
    @Autowired
    private CatWxconfigTableMapper catWxconfigTableMapper;

    @Autowired
    private ICatOutsiderealmTableService catOutsiderealmTableService;

    /**
     * 查询【请填写功能名称】
     * 
     * @param id 【请填写功能名称】主键
     * @return 【请填写功能名称】
     */
    @Override
    public CatWxconfigTable selectCatWxconfigTableById(Long id)
    {
        return catWxconfigTableMapper.selectCatWxconfigTableById(id);
    }

    /**
     * 查询【请填写功能名称】列表
     * 
     * @param catWxconfigTable 【请填写功能名称】
     * @return 【请填写功能名称】
     */
    @Override
    public List<CatWxconfigTable> selectCatWxconfigTableList(CatWxconfigTable catWxconfigTable)
    {
        List<CatWxconfigTable> list = catWxconfigTableMapper.selectCatWxconfigTableList(catWxconfigTable);
        list.forEach(catWxconfigTable1 -> {
            CatOutsiderealmTable catOutsiderealmTable = new CatOutsiderealmTable();
            catOutsiderealmTable.setWxConfigId(catWxconfigTable1.getId());
            catWxconfigTable1.setCatOutsiderealmTables(catOutsiderealmTableService.selectCatOutsiderealmTableList(catOutsiderealmTable));
        });
        return list;
    }

    /**
     * 新增【请填写功能名称】
     * 
     * @param catWxconfigTable 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int insertCatWxconfigTable( List<CatWxconfigTable> catWxconfigTable)
    {
        AtomicInteger ie = new AtomicInteger();
        catWxconfigTable.stream().forEach((catWxconfigTable1) -> {
            ie.set(catWxconfigTableMapper.insertCatWxconfigTable(catWxconfigTable1));
            catWxconfigTable1.getCatOutsiderealmTables().forEach(catOutsiderealmTable -> {
                catOutsiderealmTable.setWxConfigId(catWxconfigTable1.getId());
                catOutsiderealmTableService.insertCatOutsiderealmTable(catOutsiderealmTable);
            });
        });
        return ie.get();
    }

    /**
     * 修改【请填写功能名称】
     * 
     * @param catWxconfigTable 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int updateCatWxconfigTable( List<CatWxconfigTable> catWxconfigTable)
    {
        AtomicInteger ie = new AtomicInteger();
        catWxconfigTable.stream().forEach((e) -> {
            if (e.getId() != null){
                ie.set(catWxconfigTableMapper.updateCatWxconfigTable(e));
            }else{
                ie.set(catWxconfigTableMapper.insertCatWxconfigTable(e));
            }
            e.getCatOutsiderealmTables().forEach(catOutsiderealmTable -> {
                catOutsiderealmTable.setWxConfigId(e.getId());
                if (catOutsiderealmTable.getId() != null) {
                    if (StringUtils.isEmpty(catOutsiderealmTable.getDomainName())) {
                        catOutsiderealmTableService.deleteCatOutsiderealmTableById(catOutsiderealmTable.getId());
                    }
                    catOutsiderealmTableService.updateCatOutsiderealmTable(catOutsiderealmTable);
                }else{
                    catOutsiderealmTableService.insertCatOutsiderealmTable(catOutsiderealmTable);
                }
            });
        });
        return ie.get();
    }

    /**
     * 批量删除【请填写功能名称】
     * 
     * @param ids 需要删除的【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteCatWxconfigTableByIds(Long[] ids)
    {
        for (Long id : ids) {
            catOutsiderealmTableService.deleteCatOutsiderealmTableByWxConfigId(id);

        }
        return catWxconfigTableMapper.deleteCatWxconfigTableByIds(ids);
    }

    /**
     * 删除【请填写功能名称】信息
     * 
     * @param id 【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteCatWxconfigTableById(Long id)
    {
        return catWxconfigTableMapper.deleteCatWxconfigTableById(id);
    }
}
